#ifndef V_NAV_IVEHICLE_H
#define V_NAV_IVEHICLE_H

namespace vehicledynamics
{
	enum SteerTarget {
		STEER_TARGET_TURN_LEFT,
		STEER_TARGET_TURN_RIGHT,
		STEER_TARGET_TURN_NONE
	};

	enum AccelarationTarget {
		ACCEL_TARGET_MOVE_FORWARD,
		ACCEL_TARGET_MOVE_BACKWARD,
		ACCEL_TARGET_MOVE_NONE
	};

	struct VehicleConstructionInfo {
		float MaxForwardSpeed;
		float MaxBackwardSpeed;
		float NormalSpeed;
		float MaxSteerAngle;
		float NormalSteerStepAngle;
		float MaxForwardAccelaration;
		float MaxBackwardAccelaration;
	};

	class IVehicle
	{
	public:
		void steer(vehicledynamics::SteerTarget steerTarget) = 0;
		void applyForce(vehicledynamics::AccelarationTarget accelTarget) = 0;
		void applyBreak(vehicledynamics::AccelarationTarget accelTarget) = 0;
		void stop();
		void start();
	protected:
	private:
		vehicledynamics::VehicleConstructionInfo m_VehicleInfo;
	};
}

#endif